package com.cloud.bssp.java8.stream;

import lombok.Data;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

/**
 * @description： 实现一个从菜单筛选低热量（小于500）菜肴名称并从小到大排序的功能
 * @author：weirx
 * @date：2021/10/20 15:00
 * @version：3.0
 */
public class ChoiceCalorieByJava7 {

    @Data
    static class Dish {
        private String name;
        private Integer calorie;

        public Dish(String name, Integer calorie) {
            this.name = name;
            this.calorie = calorie;
        }
    }

    public static void main(String[] args) {
        List<Dish> dishes = Arrays.asList(
                new Dish("烧烤", 1000),
                new Dish("沙拉", 100),
                new Dish("汉堡", 1200),
                new Dish("火锅", 800),
                new Dish("粥", 300)
        );

        List<Dish> lowerCalorieDishes = new ArrayList<>();
        // 筛选小于500卡路里
        for (Dish dish : dishes) {
            if (dish.getCalorie() < 500) {
                lowerCalorieDishes.add(dish);
            }
        }
        // 排序
        lowerCalorieDishes.sort(new Comparator<Dish>() {
            @Override
            public int compare(Dish o1, Dish o2) {
                return o1.getCalorie().compareTo(o2.getCalorie());
            }
        });
        List<String> dishNames = new ArrayList<>();
        // 获取菜肴名称
        for (Dish dish : lowerCalorieDishes) {
            dishNames.add(dish.getName());
        }
        // 打印结果 [沙拉, 粥]
        System.out.println(dishNames);
    }
}
